package com.lframework.xingyun.basedata.bo.make;

import com.lframework.starter.web.core.bo.BaseBo;
import com.lframework.xingyun.basedata.dto.make.MakeMethodMaterialDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

@Data
public class MakeMethodMaterialBo extends BaseBo<MakeMethodMaterialDto> {
    /**
     * ID
     */
    @ApiModelProperty("ID")
    private String id;

    /**
     * 制造方法ID
     */
    @ApiModelProperty("制造方法ID")
    private String makeId;

    /**
     * 类型 0=主成分 1=替换品
     */
    @ApiModelProperty("类型")
    private Integer type;

    /**
     * 商品编号
     */
    @ApiModelProperty("商品编号")
    private String code;

    /**
     * 商品SKU
     */
    @ApiModelProperty("商品SKU")
    private String skuCode;

    /**
     * 消耗单位
     */
    @ApiModelProperty("消耗单位")
    private String consumeUnitId;

    /**
     * 消耗数量
     */
    @ApiModelProperty("消耗数量")
    private BigDecimal consumeNum;

    /**
     * 消耗成本
     */
    @ApiModelProperty("消耗成本")
    private BigDecimal consumeCost;

    /**
     * 排序号
     */
    @ApiModelProperty("排序号")
    private Integer orderNo;

    /**
     * 主商品编号
     */
    @ApiModelProperty("主商品编号")
    private String mainCode;

    /**
     * 主商品SKU
     */
    @ApiModelProperty("主商品SKU")
    private String mainSkuCode;

    /**
     * 材料ID
     */
    @ApiModelProperty("材料ID")
    private String productId;

    /**
     * 材料名称
     */
    @ApiModelProperty("材料名称")
    private String productName;
    /**
     * 材料规格
     */
    @ApiModelProperty("材料规格")
    private String spec;

    /**
     * 单位名称
     */
    @ApiModelProperty("单位名称")
    private String unitName;

    /**
     * 替代品
     */
    @ApiModelProperty("替代品")
    private List<MakeMethodMaterialBo> replacements;

    public MakeMethodMaterialBo() {}

    public MakeMethodMaterialBo(MakeMethodMaterialDto dto) {
        super(dto);
    }

    @Override
    protected void afterInit(MakeMethodMaterialDto dto) {
        if (dto.getType() == 0) {
            this.replacements = new ArrayList<>();
        }
    }
}
